package online.flytool.base.refect;

import online.flytool.base.check.Assert;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 没有缓存，不会产生污染变量的，线程安全的属性帮助工具包
 * @author ：lingchong
 * @date ：Created in 2022/7/3 15:51
 * @description：属性帮助类
 * @modified By：
 * @version: $
 */
public class NcFieldUtils {

    /**
     * 获取所有的属性,包括本身私有的:
     * 也包括父类私有的
     * @return
     */
    public static List<Field> getAllField(Class clazz){
        List<Field> allFields = new ArrayList();
        for(Class<?> currentClass = clazz; currentClass != null; currentClass = currentClass.getSuperclass()) {
            Field[] declaredFields = currentClass.getDeclaredFields();
            Collections.addAll(allFields, declaredFields);
        }
        return allFields;
    }



}